/*定义设备*/

#include <linux/module.h>
#include <linux/init.h>
#include <linux/device.h>

extern struct bus_type HaJbus;
#define ROOTDEV "HaJdev"
#define BRAN "2"
#define ROOTDEV_BRAN ROOTDEV BRAN


// 定义设备释放函数
void HaJdev_release(struct device *dev)
{
	printk("%s %s\n",__FILE__,__func__);
    //printk("Device released\n");
}

// 定义设备对象
struct device HaJdev = {
    .init_name = ROOTDEV_BRAN ,//"HaJdev1",  // 设备名
    .bus = &HaJbus,  // 关联总线
    .release = HaJdev_release,  // 释放函数
};

// 模块加载函数：注册设备
static int __init HaJdev_init(void)
{
    int ret;
	printk("%s %s\n",__FILE__,__func__);
    ret = device_register(&HaJdev);
    if (ret < 0)
    {
        printk("device_register error\n");
        return ret;
    }
    return 0;
}

// 模块卸载函数：注销设备
static void __exit HaJdev_exit(void)
{
	printk("%s %s\n",__FILE__,__func__);
    device_unregister(&HaJdev);
}

module_init(HaJdev_init);
module_exit(HaJdev_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("HanJ");
MODULE_DESCRIPTION("A simple Linux device example");

